/**
 * Created by Administrator on 2017/2/14.
 */
// tween.js - http://github.com/sole/tween.js
'use strict';
var TWEEN = TWEEN || function () {
        var a = [];
        return {
            REVISION: "7", getAll: function () {
                return a
            }, removeAll: function () {
                a = []
            }, add: function (c) {
                a.push(c)
            }, remove: function (c) {
                c = a.indexOf(c);
                -1 !== c && a.splice(c, 1)
            }, update: function (c) {
                if (0 === a.length)return !1;
                for (var b = 0, d = a.length, c = void 0 !== c ? c : Date.now(); b < d;)a[b].update(c) ? b++ : (a.splice(b, 1), d--);
                return !0
            }
        }
    }();
TWEEN.Tween = function (a) {
    var c = {}, b = {}, d = 1E3, e = 0, f = null, h = TWEEN.Easing.Linear.None, r = TWEEN.Interpolation.Linear, k = [], l = null, m = !1, n = null, p = null;
    this.to = function (a, c) {
        null !== c && (d = c);
        b = a;
        return this
    };
    this.start = function (d) {
        TWEEN.add(this);
        m = !1;
        f = void 0 !== d ? d : Date.now();
        f += e;
        for (var g in b)if (null !== a[g]) {
            if (b[g]instanceof Array) {
                if (0 === b[g].length)continue;
                b[g] = [a[g]].concat(b[g])
            }
            c[g] = a[g]
        }
        return this
    };
    this.stop = function () {
        TWEEN.remove(this);
        return this
    };
    this.delay = function (a) {
        e = a;
        return this
    };
    this.easing =
        function (a) {
            h = a;
            return this
        };
    this.interpolation = function (a) {
        r = a;
        return this
    };
    this.chain = function () {
        k = arguments;
        return this
    };
    this.onStart = function (a) {
        l = a;
        return this
    };
    this.onUpdate = function (a) {
        n = a;
        return this
    };
    this.onComplete = function (a) {
        p = a;
        return this
    };
    this.update = function (e) {
        if (e < f)return !0;
        !1 === m && (null !== l && l.call(a), m = !0);
        var g = (e - f) / d, g = 1 < g ? 1 : g, i = h(g), j;
        for (j in c) {
            var s = c[j], q = b[j];
            a[j] = q instanceof Array ? r(q, i) : s + (q - s) * i
        }
        null !== n && n.call(a, i);
        if (1 == g) {
            null !== p && p.call(a);
            g = 0;
            for (i = k.length; g <
            i; g++)k[g].start(e);
            return !1
        }
        return !0
    }
};
TWEEN.Easing = {
    Linear: {
        None: function (a) {
            return a
        }
    }, Quadratic: {
        In: function (a) {
            return a * a
        }, Out: function (a) {
            return a * (2 - a)
        }, InOut: function (a) {
            return 1 > (a *= 2) ? 0.5 * a * a : -0.5 * (--a * (a - 2) - 1)
        }
    }, Cubic: {
        In: function (a) {
            return a * a * a
        }, Out: function (a) {
            return --a * a * a + 1
        }, InOut: function (a) {
            return 1 > (a *= 2) ? 0.5 * a * a * a : 0.5 * ((a -= 2) * a * a + 2)
        }
    }, Quartic: {
        In: function (a) {
            return a * a * a * a
        }, Out: function (a) {
            return 1 - --a * a * a * a
        }, InOut: function (a) {
            return 1 > (a *= 2) ? 0.5 * a * a * a * a : -0.5 * ((a -= 2) * a * a * a - 2)
        }
    }, Quintic: {
        In: function (a) {
            return a * a * a *
                a * a
        }, Out: function (a) {
            return --a * a * a * a * a + 1
        }, InOut: function (a) {
            return 1 > (a *= 2) ? 0.5 * a * a * a * a * a : 0.5 * ((a -= 2) * a * a * a * a + 2)
        }
    }, Sinusoidal: {
        In: function (a) {
            return 1 - Math.cos(a * Math.PI / 2)
        }, Out: function (a) {
            return Math.sin(a * Math.PI / 2)
        }, InOut: function (a) {
            return 0.5 * (1 - Math.cos(Math.PI * a))
        }
    }, Exponential: {
        In: function (a) {
            return 0 === a ? 0 : Math.pow(1024, a - 1)
        }, Out: function (a) {
            return 1 === a ? 1 : 1 - Math.pow(2, -10 * a)
        }, InOut: function (a) {
            return 0 === a ? 0 : 1 === a ? 1 : 1 > (a *= 2) ? 0.5 * Math.pow(1024, a - 1) : 0.5 * (-Math.pow(2, -10 * (a - 1)) + 2)
        }
    }, Circular: {
        In: function (a) {
            return 1 -
                Math.sqrt(1 - a * a)
        }, Out: function (a) {
            return Math.sqrt(1 - --a * a)
        }, InOut: function (a) {
            return 1 > (a *= 2) ? -0.5 * (Math.sqrt(1 - a * a) - 1) : 0.5 * (Math.sqrt(1 - (a -= 2) * a) + 1)
        }
    }, Elastic: {
        In: function (a) {
            var c, b = 0.1;
            if (0 === a)return 0;
            if (1 === a)return 1;
            !b || 1 > b ? (b = 1, c = 0.1) : c = 0.4 * Math.asin(1 / b) / (2 * Math.PI);
            return -(b * Math.pow(2, 10 * (a -= 1)) * Math.sin((a - c) * 2 * Math.PI / 0.4))
        }, Out: function (a) {
            var c, b = 0.1;
            if (0 === a)return 0;
            if (1 === a)return 1;
            !b || 1 > b ? (b = 1, c = 0.1) : c = 0.4 * Math.asin(1 / b) / (2 * Math.PI);
            return b * Math.pow(2, -10 * a) * Math.sin((a - c) *
                2 * Math.PI / 0.4) + 1
        }, InOut: function (a) {
            var c, b = 0.1;
            if (0 === a)return 0;
            if (1 === a)return 1;
            !b || 1 > b ? (b = 1, c = 0.1) : c = 0.4 * Math.asin(1 / b) / (2 * Math.PI);
            return 1 > (a *= 2) ? -0.5 * b * Math.pow(2, 10 * (a -= 1)) * Math.sin((a - c) * 2 * Math.PI / 0.4) : 0.5 * b * Math.pow(2, -10 * (a -= 1)) * Math.sin((a - c) * 2 * Math.PI / 0.4) + 1
        }
    }, Back: {
        In: function (a) {
            return a * a * (2.70158 * a - 1.70158)
        }, Out: function (a) {
            return --a * a * (2.70158 * a + 1.70158) + 1
        }, InOut: function (a) {
            return 1 > (a *= 2) ? 0.5 * a * a * (3.5949095 * a - 2.5949095) : 0.5 * ((a -= 2) * a * (3.5949095 * a + 2.5949095) + 2)
        }
    }, Bounce: {
        In: function (a) {
            return 1 -
                TWEEN.Easing.Bounce.Out(1 - a)
        }, Out: function (a) {
            return a < 1 / 2.75 ? 7.5625 * a * a : a < 2 / 2.75 ? 7.5625 * (a -= 1.5 / 2.75) * a + 0.75 : a < 2.5 / 2.75 ? 7.5625 * (a -= 2.25 / 2.75) * a + 0.9375 : 7.5625 * (a -= 2.625 / 2.75) * a + 0.984375
        }, InOut: function (a) {
            return 0.5 > a ? 0.5 * TWEEN.Easing.Bounce.In(2 * a) : 0.5 * TWEEN.Easing.Bounce.Out(2 * a - 1) + 0.5
        }
    }
};
TWEEN.Interpolation = {
    Linear: function (a, c) {
        var b = a.length - 1, d = b * c, e = Math.floor(d), f = TWEEN.Interpolation.Utils.Linear;
        return 0 > c ? f(a[0], a[1], d) : 1 < c ? f(a[b], a[b - 1], b - d) : f(a[e], a[e + 1 > b ? b : e + 1], d - e)
    }, Bezier: function (a, c) {
        var b = 0, d = a.length - 1, e = Math.pow, f = TWEEN.Interpolation.Utils.Bernstein, h;
        for (h = 0; h <= d; h++)b += e(1 - c, d - h) * e(c, h) * a[h] * f(d, h);
        return b
    }, CatmullRom: function (a, c) {
        var b = a.length - 1, d = b * c, e = Math.floor(d), f = TWEEN.Interpolation.Utils.CatmullRom;
        return a[0] === a[b] ? (0 > c && (e = Math.floor(d = b * (1 + c))), f(a[(e -
        1 + b) % b], a[e], a[(e + 1) % b], a[(e + 2) % b], d - e)) : 0 > c ? a[0] - (f(a[0], a[0], a[1], a[1], -d) - a[0]) : 1 < c ? a[b] - (f(a[b], a[b], a[b - 1], a[b - 1], d - b) - a[b]) : f(a[e ? e - 1 : 0], a[e], a[b < e + 1 ? b : e + 1], a[b < e + 2 ? b : e + 2], d - e)
    }, Utils: {
        Linear: function (a, c, b) {
            return (c - a) * b + a
        }, Bernstein: function (a, c) {
            var b = TWEEN.Interpolation.Utils.Factorial;
            return b(a) / b(c) / b(a - c)
        }, Factorial: function () {
            var a = [1];
            return function (c) {
                var b = 1, d;
                if (a[c])return a[c];
                for (d = c; 1 < d; d--)b *= d;
                return a[c] = b
            }
        }(), CatmullRom: function (a, c, b, d, e) {
            var a = 0.5 * (b - a), d = 0.5 * (d - c), f =
                e * e;
            return (2 * c - 2 * b + a + d) * e * f + (-3 * c + 3 * b - 2 * a - d) * f + a * e + c
        }
    }
};